package com.googlecode.java_cl_parser;

@java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE})
@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
public @interface CLIEntry
{
	public static enum parser_type
	{
		gnu,
		posix,
		basic
	}

	/**
	 * The description of this tool.  This should provide enough information that a user will know
	 * how to use the tool without having to run through trial and error.
	 * @return
	 */
	String description();

	/**
	 * The short name for this tool.  This is only used in the generated documentation.  The default
	 * is the simple class name as returned by Class.getSimpleName().
	 * @return
	 */
	String nickName() default "\0";

	/**
	 * This determines the exact syntax that is applied to the command line. These parser types match
	 * the Apache Commons CLI parsers.
	 * @return
	 */
	parser_type parserType() default parser_type.gnu;

	/**
	 * Identifier for the maintainer of this tool.  Could be an email address, messenger name, whatever.
	 * @return
	 */
	String contact() default "\0";

	/**
	 * Where this project documentation lives.
	 * @return
	 */
	String documentationUrl() default "\0";

	/**
	 * Identifier for where this project lives in version control.  There are no rules,
	 * it just needs to be clear.  E.G., for subversion ideally
	 * this would be a fully-qualified subversion URL.
	 * @return
	 */
	String versionControl() default "\0";

	/**
	 * The current version number.  Required.
	 * @return
	 */
	String version();
}